package com.amado.course31Generics;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 *   泛型，1、约束了参数类型，2、返回的值不用强制转换 3、不报编译警告、
 *  什么类可以加泛型，看类的定义 public interface List<E>
 * @author Administrator
 *
 */
public class TestList {
	public static void main(String[] args) {
		notGenericsList();
		genericsList();
	}
	/**
	 * list不使用泛型
	 */
	public static void notGenericsList() {
		List list = new ArrayList();
		list.add("abc");
		list.add(123);
		Object obj = list.get(0);
		String str = (String) obj;
		System.out.println(str.indexOf("b"));
	}
	/**
	 * list使用泛型
	 */
	public static void genericsList() {
		List<String> list = new ArrayList<>();
		list.add("abc");
		//会报错，类型不匹配
//		list.add(123);
		System.out.println(list.get(0).indexOf("b"));
	}
	/**
	 * map不使用泛型
	 */
	public static void notGenericsMap() {
		Map map = new HashMap();
		map.put("string", 12);
		map.put("abc", "abc");
	}	
	/**
	 * map使用泛型
	 */
	public static void genericsMap() {
		Map<String,Integer> map = new HashMap<>();
		map.put("string", 12);
		//类型不匹配
//		map.put("abc", "abc");
		map.get("asdfasd");
	}
}
